package com.ddyx.common.framework.datasource;

import java.lang.annotation.*;

/**
 * 多数据源标识  切换数据注解 可以用于类或者方法级别 方法级别优先级 > 类级别
 * @author agula
 * @date 2019-07-10 15:28
 */
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER})
@Documented
public @interface DataSource {

	/**
     * 默认值是master,因为默认数据源的key也是master。
	 * 也就是说如果直接用注解，而不指定value的话，那么默认就使用master默认数据源。
	 */
	String value() default "master"; //该值即key值


	/**
	 * 动态数据源整合
	 * 1、首先我们需要在我们的application.yml配置我们的多个数据源
	 * 2、新建一个数据源上下文，用户记录当前线程使用的数据源的key是什么，以及记录所有注册成功的数据源的key的集合
	 * 3、通知spring用key当前的数据源 AbstractRoutingDataSource
	 * 4、注解实现动态数据源的切换
	 * 5、实现给对应的类或者方法设置他们的数据源的key，并且保存在数据源上下文中即可
	 */
}
